From 45fb552eb278d7e7a2b0b75f28aefaff83af4565 Mon Sep 17 00:00:00 2001 From: "chris@ubuntu.eng.hq.xensource.com" Date: Tue, 13 Dec 2005 19:04:14 -0700 Subject: [PATCH] Make set_pte_at and set_pte_at_sync macros instead of inline functions. This avoids having to include sched.h to get a definition of init_mm. Signed-off-by: Christian Limpach --- .../include/asm-xen/asm-i386/pgtable-2level.h | 33 ++++++++----------- .../include/asm-xen/asm-i386/pgtable-3level.h | 33 ++++++++----------- .../include/asm-xen/asm-x86_64/pgtable.h | 14 +++----- 3 files changed, 31 insertions(+), 49 deletions(-) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h index 9bdf03410c..ac5f7ace61 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h @@ -15,26 +15,19 @@ */ #define set_pte(pteptr, pteval) (*(pteptr) = pteval) -inline static void set_pte_at(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t val ) -{ - if ( ((mm != current->mm) && (mm != &init_mm)) || - HYPERVISOR_update_va_mapping( (addr), (val), 0 ) ) - { - set_pte(ptep, val); - } -} - -inline static void set_pte_at_sync(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t val ) -{ - if ( ((mm != current->mm) && (mm != &init_mm)) || - HYPERVISOR_update_va_mapping( (addr), (val), UVMF_INVLPG ) ) - { - set_pte(ptep, val); - xen_invlpg(addr); - } -} +#define set_pte_at(_mm,addr,ptep,pteval) do { \ + if (((_mm) != current->mm && (_mm) != &init_mm) || \ + HYPERVISOR_update_va_mapping((addr), (pteval), 0)) \ + set_pte((ptep), (pteval)); \ +} while (0) + +#define set_pte_at_sync(_mm,addr,ptep,pteval) do { \ + if (((_mm) != current->mm && (_mm) != &init_mm) || \ + HYPERVISOR_update_va_mapping((addr), (pteval), UVMF_INVLPG)) { \ + set_pte((ptep), (pteval)); \ + xen_invlpg((addr)); \ + } \ +} while (0) #define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h index fa516266ab..eb77b6e02f 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/pgtable-3level.h @@ -69,26 +69,19 @@ static inline void set_pte(pte_t *ptep, pte_t pte) # define set_pte_atomic(pteptr,pteval) set_pte(pteptr,pteval) #endif -inline static void set_pte_at(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t val ) -{ - if ( ((mm != current->mm) && (mm != &init_mm)) || - HYPERVISOR_update_va_mapping( (addr), (val), 0 ) ) - { - set_pte(ptep, val); - } -} - -inline static void set_pte_at_sync(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t val ) -{ - if ( ((mm != current->mm) && (mm != &init_mm)) || - HYPERVISOR_update_va_mapping( (addr), (val), UVMF_INVLPG ) ) - { - set_pte(ptep, val); - xen_invlpg(addr); - } -} +#define set_pte_at(_mm,addr,ptep,pteval) do { \ + if (((_mm) != current->mm && (_mm) != &init_mm) || \ + HYPERVISOR_update_va_mapping((addr), (pteval), 0)) \ + set_pte((ptep), (pteval)); \ +} while (0) + +#define set_pte_at_sync(_mm,addr,ptep,pteval) do { \ + if (((_mm) != current->mm && (_mm) != &init_mm) || \ + HYPERVISOR_update_va_mapping((addr), (pteval), UVMF_INVLPG)) { \ + set_pte((ptep), (pteval)); \ + xen_invlpg((addr)); \ + } \ +} while (0) #ifdef CONFIG_XEN_SHADOW_MODE # define set_pmd(pmdptr,pmdval) \ diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h index d6bdf76e00..0e00baf30e 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/pgtable.h @@ -266,15 +266,11 @@ static inline unsigned long pud_bad(pud_t pud) return val & ~(_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED); } -inline static void set_pte_at(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t val ) -{ - if ( ((mm != current->mm) && (mm != &init_mm)) || - HYPERVISOR_update_va_mapping( (addr), (val), 0 ) ) - { - set_pte(ptep, val); - } -} +#define set_pte_at(_mm,addr,ptep,pteval) do { \ + if (((_mm) != current->mm && (_mm) != &init_mm) || \ + HYPERVISOR_update_va_mapping((addr), (pteval), 0)) \ + set_pte((ptep), (pteval)); \ +} while (0) #define pte_none(x) (!(x).pte) #define pte_present(x) ((x).pte & (_PAGE_PRESENT | _PAGE_PROTNONE)) -- 2.30.2